package com.om.refactoring;

import junit.framework.TestCase;

public class RateCalculatorIndustrialCustomerWithThreeSitesTest extends RateCalculatorTestBase {
    RateCalculator rateCalculator;
    Customer customer;
    
    protected void setUp() {
        rateCalculator = new RateCalculator();
        customer = new Customer();
        customer.customerType = Customer.INDUSTRIAL;
        addSite(300);
        addSite(600);
        addSite(9700);
    }

    void validateRate(double expectedRate) {
        double actualRate = rateCalculator.calculateRate(customer);
        assertEquals(expectedRate, actualRate, 0.0001);
    }

    void addSite(int kwh) {
        Site site = new Site();
        site.kwh = kwh;
        customer.sites.add(site);
    }
    
    public void testIndustiralWith3SitesVariableKwh() {
        validateRate(10070);
    }

    public void testIndustrialInterruptable() {
        customer.industrialRate = Customer.INTERRUPTABLE;
        validateRate(8480);
    }

    public void testIndustrialOneHourNotice() {
        customer.industrialRate = Customer.ONE_HOUR_NOTICE;
        validateRate(9540);
    }

    public void testIndustrialDefault() {
        customer.industrialRate = Customer.UNDEFINED;
        validateRate(10070);
    }
}
